package com.ai.service.made;

import com.ai.common.CommonResponse;
import com.ai.entity.made.RegionManage;
import com.ai.entity.made.camera.CameraPO;
import com.ai.model.param.RegionInfoParam;
import com.ai.model.param.RegionStaticsViolationParam;
import com.ai.model.vo.CoalMineVo;
import com.baomidou.mybatisplus.extension.service.IService;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author jiaok
 * @since 2023-07-24
 */
public interface IRegionManageService extends IService<RegionManage> {

    CommonResponse getList();

    CommonResponse getBindList(String id);

    CommonResponse manageCamera(String id, List<String> cameraIds);

    CommonResponse getBindListID(String id);

    CommonResponse getRegionList();

    CommonResponse statisticsViolation(RegionStaticsViolationParam regionStaticsViolationParam);

    CommonResponse cameraStatistics();


    CommonResponse topFiveViolations();

    CommonResponse regionalViolation();

    CommonResponse deviceInformation();

    /**
     * 删除指定区域与摄像头之间的绑定关系
     * @param id
     */
    void removeRelationByRegionId(String id);

    /**
     * 根据摄像头id获取区域名称
     * @param id 摄像头id
     * @return
     */
    String getRegionByCameraId(Integer id);

    /**
     * 获取指定区域已绑定的人员信息
     *
     * @param id
     * @return
     */
    CommonResponse staffingBindList(@Param("id") String id);

    /**
     * 获取所有的人员信息
     * @return
     */
    CommonResponse staffingAllUserList();

    /**
     * 保存区域配置信息
     * @param regionInfoParam
     * @return
     */
    CommonResponse saveOrUpdateRegionInfo(RegionInfoParam regionInfoParam);

    /**
     * 树形结构展示节点信息
     * @return
     */
    CommonResponse treeListSelect();



    List<CoalMineVo> treeList();

    /**
     * 获取当前管理员的手机号
     * @param cameraPO 摄像头信息
     * @return
     */
    String getRegionManagePhone(CameraPO cameraPO);

    /**
     * 获取指定组织下的所有摄像头
     * @param regionBaseId 组织id
     * @return 拥有的所有摄像头列表
     */
    List<String> getBelowCameraIdList(String regionBaseId);


}
